package utils

import (
	"encoding/json"
	"fmt"
	"log"
)

func StructToJson(data interface{}) string {
	jsons, errs := json.Marshal(data) //转换成JSON返回的是byte[]
	if errs != nil {
		fmt.Println(errs.Error())
	}
	return string(jsons)
}

func JsonToStruct(data string, target any) {
	str := []byte(data)
	err := json.Unmarshal(str, &target)
	//解析失败会报错，如json字符串格式不对，缺"号，缺}等。
	if err != nil {
		fmt.Println(err.Error())
	}
}

func CopyStruct(source interface{}, target interface{}) {
	jsons, errs := json.Marshal(source) //转换成JSON返回的是byte[]
	if errs != nil {
		fmt.Println("marshal error:" + errs.Error())
	}
	log.Printf("变量的地址: %s\n", jsons)
	log.Printf("变量的地址: %x\n", &target)
	err := json.Unmarshal(jsons, target)
	//解析失败会报错，如json字符串格式不对，缺"号，缺}等。
	if err != nil {
		log.Println("unmarshal error:" + err.Error())
	}
}
